#include "InputToVS.h"
#include "digital_io.h"
#include "bool.h"
#include "simpleEventHandler.h"

#include "PMARData.h"

#define MAX_INPUT_SCAN 18

static unsigned char Input_Values[MAX_INPUT_SCAN]; 
static unsigned char Input_PreviousValue[MAX_INPUT_SCAN];
//static unsigned char InputChanged=false;

//*******************************************************************
//                           InputScan_Init
//*******************************************************************
void InputScan_Init (void)
{
	memset(Input_Values,0,MAX_INPUT_SCAN*sizeof(char));
	memset(Input_PreviousValue,0,MAX_INPUT_SCAN*sizeof(char));
}

//*******************************************************************
//                           Input_scan
//*******************************************************************
void Input_scan (unsigned char * Digital_Input_Data)
{   
	unsigned char i;
	
	for (i=6;i<(MAX_INPUT_SCAN);i++)
	{
		Input_Values[i]=Digital_Input_Data[i];
		
	}
	
	if (Input_Values[RICHIESTA_SCARICO]!=Input_PreviousValue[RICHIESTA_SCARICO])
	{
		if (Input_Values[RICHIESTA_SCARICO]) SEQ_AddEvent(Richiesta_Scarico_ENB);
		else SEQ_AddEvent(Richiesta_Scarico_DIS);
	}
	if (Input_Values[FINE_RETE]!=Input_PreviousValue[FINE_RETE])
	{
		if (Input_Values[FINE_RETE]) SEQ_AddEvent(Fine_Rete_ENB);
		else SEQ_AddEvent(Fine_Rete_DIS);
	}
	if (Input_Values[TRAMOGGIA_CHIUSA]!=Input_PreviousValue[TRAMOGGIA_CHIUSA])
	{
		if (Input_Values[TRAMOGGIA_CHIUSA]) SEQ_AddEvent(Tramoggia_Chiusa_ENB);
		else SEQ_AddEvent(Tramoggia_Chiusa_DIS);
	}
	if (Input_Values[TRAMOGGIA_ALIMENTAZIONE_PIENA]!=Input_PreviousValue[TRAMOGGIA_ALIMENTAZIONE_PIENA])
	{
		if (Input_Values[TRAMOGGIA_ALIMENTAZIONE_PIENA]) SEQ_AddEvent(Tramoggia_Alim_Piena_ENB);
		else SEQ_AddEvent(Tramoggia_Alim_Piena_DIS);
	}
	if (Input_Values[CONTEGGIO_IMPULSI_RUOTA_FONICA ]!=Input_PreviousValue[CONTEGGIO_IMPULSI_RUOTA_FONICA])
	{
		if (Input_Values[CONTEGGIO_IMPULSI_RUOTA_FONICA ]) SEQ_AddEvent(Cont_Impulsi_Ruota_ENB);
		else SEQ_AddEvent(Cont_Impulsi_Ruota_DIS);
	}	
	if (Input_Values[TACCA_DI_ZERO_RUOTA_FONICA]!=Input_PreviousValue[TACCA_DI_ZERO_RUOTA_FONICA])
	{
		if (Input_Values[TACCA_DI_ZERO_RUOTA_FONICA]) SEQ_AddEvent(Tacca_Zero_Ruota_ENB);
		else SEQ_AddEvent(Tacca_Zero_Ruota_DIS);
	}	
	if (Input_Values[CARTER_DI_PROTEZIONE]!=Input_PreviousValue[CARTER_DI_PROTEZIONE ])
	{
		if (Input_Values[CARTER_DI_PROTEZIONE]) SEQ_AddEvent(Carter_Protezione_ENB);
		else SEQ_AddEvent(Carter_Protezione_DIS);
	}	
	if (Input_Values[RIARMO_POTENZA]!=Input_PreviousValue[RIARMO_POTENZA])
	{
		if (Input_Values[RIARMO_POTENZA]) SEQ_AddEvent(Riarmo_Potenza_ENB);
		else SEQ_AddEvent(Riarmo_Potenza_DIS);
	}
	if (Input_Values[FINECORSA_CLIPSATRICE]!=Input_PreviousValue[FINECORSA_CLIPSATRICE])
	{
		if (Input_Values[FINECORSA_CLIPSATRICE]) SEQ_AddEvent(Finecorsa_Clipsatrice_ENB);
		else SEQ_AddEvent(Finecorsa_Clipsatrice_DIS);
	}
	if (Input_Values[PREMIRETE_CHIUSO_CLIP]!=Input_PreviousValue[PREMIRETE_CHIUSO_CLIP])
	{
		if (Input_Values[PREMIRETE_CHIUSO_CLIP]) SEQ_AddEvent(Premirete_Chiuso_Clip_ENB);
		else SEQ_AddEvent(Premirete_Chiuso_Clip_DIS);
	}
	if (Input_Values[STAMPANTE_PRONTA]!=Input_PreviousValue[STAMPANTE_PRONTA])
	{
		if (Input_Values[STAMPANTE_PRONTA]) SEQ_AddEvent(Stampante_Pronta_ENB);
		else SEQ_AddEvent(Stampante_Pronta_DIS);
	}
	if (Input_Values[OVERLOAD_MAGNETOTERMICO]!=Input_PreviousValue[OVERLOAD_MAGNETOTERMICO])
	{
		if (Input_Values[OVERLOAD_MAGNETOTERMICO]) SEQ_AddEvent(Overload_Magnetotermico_ENB);
		else SEQ_AddEvent(Overload_Magnetotermico_DIS);
	}				
	
			//if (Keypad_Values[i]!=Keypad_PreviousValue[i]) {
				//KeyPressed=true;
			//}
			
	
	for (i=6;i<MAX_INPUT_SCAN;i++)
	{
		Input_PreviousValue[i]=Input_Values[i];
	}
}


//*******************************************************************
//                           Input_read
//*******************************************************************
/*
unsigned char Input_read (char * Digital_Input_Data)
{
		unsigned char i;
		unsigned char KeyPad_Keys=0;
		
		for (i=0;i<MAX_KEYPAD_KEYS;i++)
		{
			KeyPad_Keys|=(Digital_Input_Data[i]<<i)&(~(1<<i));
		}
		return KeyPad_Keys;
}
*/

/*
//*******************************************************************
//                           Input_Changed
//*******************************************************************
unsigned char Input_Changed (void)
{   unsigned char TempStatus;
	TempStatus=KeyPressed;
	KeyPressed=false;
	return TempStatus;
}
*/